# Python字符串rpartition：从右侧精准分割，让分隔更灵活

# [钛妹]: 基础不牢谈何AI？今天钛妹又学习了Python的rpartition方法，欢迎大神们指正错误！
# [钛哥]: 没问题，直接上实例，让你秒懂它的神奇之处！
txt = "I could eat bananas all day, bananas are my favorite fruit"

# [钛妹]: 我想要把字符串里最后一次出现“bananas”分出来，看看前后都是什么内容。
# [钛哥]: 用rpartition轻松搞定，你看：
res_found = txt.rpartition("bananas")
print("示例1 - 查到'bananas'的分割结果:", res_found)

# [钛妹]: 它返回了一个三元素元组：前面那些字符、'bananas'本身、以及剩余部分，对吧？
# [钛哥]: 正解。rpartition会从右往左找最后一次出现的目标字符串，再拆成三块。

# [钛妹]: 那如果找不到匹配内容呢，比如搜“apples”？
# [钛哥]: 那它就返回('', '', 原字符串)，演示一下：
res_not_found = txt.rpartition("apples")
print("示例2 - 查不到'apples'时的分割结果:", res_not_found)

# [钛妹]: 哈哈，前两个元素都变成空字符串了，第三个是原文本，看来确实找不到就这样。
# [钛哥]: 没错，跟partition类似，但partition是从左查第一次出现，而rpartition是从右查最后一次出现。

# [钛妹]: 我再写个小测试，给字符串末尾再加一个“bananas”，看它怎么分割？
# [钛哥]: 好呀，能让你看得更直观。
txt_ext = txt + " bananas"
res_ext = txt_ext.rpartition("bananas")
print("示例3 - 尾部再加'bananas'后的分割:", res_ext)

# [钛妹]: 结果正如预期，最后的“bananas”被单独分出来，前面就是第一部分。
# [钛哥]: 这正是rpartition的特色，匹配到最右侧的那个词，让你一次拿到前、中、后内容。

# [钛妹]: 这么说挺有用的，我可以拿到最右边的那个匹配，再继续做处理。
# [钛哥]: 是啊，如果我们只想处理最后出现的关键词，rpartition就特别合适。

# [钛妹]: 总结一下吧，万一我忘了呢。
# [钛哥]: 好的，简明要点：
#         1. str.rpartition(sub)：返回一个三元组(左侧内容, sub, 右侧内容)；
#         2. 如果找到sub最后一次出现的位置就在那里切分；
#         3. 如果找不到就返回('', '', 原字符串)；
#         4. 与partition区别在于搜索方向——rpartition从右向左，partition从左向右。

# [钛妹]: 太好了，这下我对字符串分割有了更全面的理解。
# [钛哥]: 下次用到这种从右侧进行分割的需求，就派rpartition上场吧！
print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")